From: Owen W. Taylor Date: Mon, 31 Jan 2011 01:44:05 +0000 (-0500) Subject: Move restacking handling from WorkspacesView to WorkspacesDisplay X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9092 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=eda12542c0d9c02704a15cc57381d277472dd6df;p=gnome-shell.git Move restacking handling from WorkspacesView to WorkspacesDisplay Moving the base tracking of restacking to WorkspacesDisplay will allow us to use it to update stacking in the workspace thumbnails as well as in the main workspaces. https://bugzilla.gnome.org/show_bug.cgi?id=640996 --- diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index 9c3c8cd0e..8f97d0ee9 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -77,7 +77,6 @@ WorkspacesView.prototype = { this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, function() { - this._onRestacked(); for (let w = 0; w < this._workspaces.length; w++) this._workspaces[w].zoomToOverview(); })); @@ -99,9 +98,6 @@ WorkspacesView.prototype = { this._switchWorkspaceNotifyId = global.window_manager.connect('switch-workspace', Lang.bind(this, this._activeWorkspaceChanged)); - this._restackedNotifyId = - global.screen.connect('restacked', - Lang.bind(this, this._onRestacked)); this._itemDragBeginId = Main.overview.connect('item-drag-begin', Lang.bind(this, this._dragBegin)); @@ -207,15 +203,7 @@ WorkspacesView.prototype = { return this._workspaces[0].scale; }, - _onRestacked: function() { - let stack = global.get_window_actors(); - let stackIndices = {}; - - for (let i = 0; i < stack.length; i++) { - // Use the stable sequence for an integer to use as a hash key - stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i; - } - + syncStacking: function(stackIndices) { for (let i = 0; i < this._workspaces.length; i++) this._workspaces[i].syncStacking(stackIndices); }, @@ -502,7 +490,6 @@ WorkspacesView.prototype = { this._scrollAdjustment.run_dispose(); Main.overview.disconnect(this._overviewShowingId); global.window_manager.disconnect(this._switchWorkspaceNotifyId); - global.screen.disconnect(this._restackedNotifyId); if (this._timeoutId) { Mainloop.source_remove(this._timeoutId); @@ -824,6 +811,10 @@ WorkspacesDisplay.prototype = { global.screen.connect('notify::n-workspaces', Lang.bind(this, this._workspacesChanged)); + this._restackedNotifyId = + global.screen.connect('restacked', + Lang.bind(this, this._onRestacked)); + if (this._itemDragBeginId == 0) this._itemDragBeginId = Main.overview.connect('item-drag-begin', Lang.bind(this, this._dragBegin)); @@ -836,6 +827,8 @@ WorkspacesDisplay.prototype = { if (this._windowDragEndId == 0) this._windowDragEndId = Main.overview.connect('window-drag-end', Lang.bind(this, this._dragEnd)); + + this._onRestacked(); }, hide: function() { @@ -845,6 +838,10 @@ WorkspacesDisplay.prototype = { global.screen.disconnect(this._nWorkspacesNotifyId); this._nWorkspacesNotifyId = 0; } + if (this._restackedNotifyId > 0){ + global.screen.disconnect(this._restackedNotifyId); + this._restackedNotifyId = 0; + } if (this._itemDragBeginId > 0) { Main.overview.disconnect(this._itemDragBeginId); this._itemDragBeginId = 0; @@ -870,6 +867,18 @@ WorkspacesDisplay.prototype = { } }, + _onRestacked: function() { + let stack = global.get_window_actors(); + let stackIndices = {}; + + for (let i = 0; i < stack.length; i++) { + // Use the stable sequence for an integer to use as a hash key + stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i; + } + + this.workspacesView.syncStacking(stackIndices); + }, + _workspacesChanged: function() { let oldNumWorkspaces = this._workspaces.length; let newNumWorkspaces = global.screen.n_workspaces;